// pages/category/index.js
import { request } from "../../request/request.js";
import regeneratorRuntime from "../../lib/runtime/runtime";
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 侧边栏的分类数据
    cateList: [],
    // 右内容区的数据
    contentList: [],
    // 侧边栏选中的分类项
    currentIndex: 0,
    // 右内容区 scroll-top 组件距离顶部的距离
    scrollTopNum: 0
  },

  /* 接口返回的数据 */
  cates: [],

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    /*
      1. 先看本地有可用的缓存数据？
      2. 有则用，否则发送网络请求新数据
    */
    let localStorage = wx.getStorageSync("cates");
    if (!localStorage) 
    {
      this.getCat_Con_List();
    }
    else 
    {
      // 如果本地缓存过期则重新获取新数据
      if ((Date.now() - wx.getStorageSync("cates").time) > 10000) 
      {
        this.getCat_Con_List();
      }
      else
      {
        this.cates = wx.getStorageSync("cates").data;
        // 侧边栏的分类数据
        let cateList = this.cates.map((v => v.cat_name));
        // 右内容区的数据
        let contentList = this.cates[0].children;
        this.setData({
          cateList,
          contentList
        })  
      }    
    }
  },

  // 获取侧边栏的分类数据和右内容区的数据
  async getCat_Con_List() {
    /*request({
      // url: "https://api-hmugo-web.itheima.net/api/public/v1/categories"
      url: "/categories"
    }).then((res) => {
      this.cates = res.data.message;
      // 将获取的数据存入本地缓存中
      let localStorage = {time: Date.now(),data: this.cates};
      wx.setStorageSync("cates",localStorage);
      // 侧边栏的分类数据
      let cateList = this.cates.map((v => v.cat_name));
      // 右内容区的数据
      let contentList = this.cates[0].children;
      this.setData({
        cateList,
        contentList
      })
    })*/
    // 使用 async / await 实现异步发送请求（功能和上面一样）
    let res = await request({url: "/categories"});
    this.cates = res.data.message;
    // 将获取的数据存入本地缓存中
    let localStorage = {time: Date.now(),data: this.cates};
    wx.setStorageSync("cates",localStorage);
    // 侧边栏的分类数据
    let cateList = this.cates.map((v => v.cat_name));
    // 右内容区的数据
    let contentList = this.cates[0].children;
    this.setData({
      cateList,
      contentList
    })    
  },

  // 根据侧边栏分类项目的改变获取右侧内容区的数据
  tapSideBarItem(e) {
    let { index } = e.currentTarget.dataset;
    let contentList = this.cates[index].children;
    this.setData({
      currentIndex: index,
      contentList,
      scrollTopNum: 0
    })
  },



  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})